#!/bin/bash
ymlLocation="$(pwd)/application.yml"
#使用说明，用来提示输入参数
usage(){
     echo -e "\033[0;31mUsage: sh execute.sh [jarName] [start|stop|restart|status]\033[0m"
     exit 1
}

#检查程序是否在运行
is_exist(){
   #获取PID，最后打印出结果$2 就是PID 注意，此处$2不是我们运行此脚本的第二个参数($0 不算做第一个参数)！
   pid=`ps -ef |grep java|grep $APP_NAME|grep -v grep|awk '{print $2}'`
   #如果不存在返回1，存在返回0
   if [ -z "${pid}" ]; then
     return 1
   else
     return 0
   fi
}

#根据输入参数，选择执行对应jar包，不输入则执行使用说明
APP_NAME="$1"

#启动方法
start(){
   is_exist
   if [ $? -eq "0" ]; then
     echo -e "${APP_NAME} is already running. pid=\033[0;31m${pid}\033[0m ."
   else
     nohup java -jar $APP_NAME --spring.config.location=${ymlLocation} &
     sleep 5
     is_exist
     if [ $? -eq "0" ]; then
        echo -e "${APP_NAME} start success. pid=\033[0;31m${pid}\033[0m ."
     else
        echo "${APP_NAME} start fail"
      fi
   fi
}

#停止方法
stop(){
   is_exist
   if [ $? -eq "0" ]; then
     kill -9 $pid
   else
     echo "${APP_NAME} is not running"
   fi
}

#输出运行状态
status(){
   is_exist
   if [ $? -eq "0" ]; then
     echo -e "${APP_NAME} is running. Pid is \033[0;31m${pid}\033[0m"
   else
     echo "${APP_NAME} is not running."
   fi
}

#重启
restart(){
    #先停止服务，然后等待10秒后，再次重启服务，不过2秒时间太短，建议久一点
    stop
    sleep 10
    start
}

#根据输入参数，选择执行对应方法，不输入则执行使用说明
case "$2" in
   "start")
     start
     ;;
   "stop")
     stop
     ;;
   "status")
     status
     ;;
   "restart")
     restart
     ;;
   *)
     usage
     ;;
esac

